package com.leetcode.array;

/**
 * @author: ZhouBert
 * @date: 2019/9/22
 * @description:	[80]	删除排序数组中的重复项 II	中等
 * 给定一个排序数组，你需要在原地删除重复出现的元素，使得每个元素最多出现两次，返回移除后数组的新长度。
 *
 * 不要使用额外的数组空间，你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array-ii
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 *
 * input:nums = [1,1,1,2,2,3],
 * output:5
 */
public class RemoveDuplicatesII80 {


	public static int removeDuplicates(int[] nums) {
		//临界值验证
		if (nums==null||nums.length==0){
			return 0;
		}
		int bIndex = 0,count=0;
		for (int i = 1; i < nums.length; i++) {
			if (nums[bIndex] != nums[i]) {
				nums[++bIndex] = nums[i];
				count=0;
			}
			///相等时：计数器+1，
			else if(nums[bIndex] == nums[i] && count<1){
				nums[++bIndex] = nums[i];
				count++;
			}
		}
		return bIndex + 1;
	}

	public static void main(String[] args) {
		int[] ints = {1, 1, 1, 2, 2, 3};
		System.out.println(removeDuplicates(ints));
	}
}
